let express = require('express');
const expressJWT = require('express-jwt');



let app = express();
app.listen(3000, () => console.log('3000 BE后台服务启动'));

// ***********************************************************中间件
// 处理post参数
app.use(express.urlencoded({ extended: false }));


// 进行token解密： 注意这个包是基于express；
// 加上要求：/my 开头的url请求  请求头里面都得有token
//          了解：内部有封装：如果token解密错误，内容返回错误显示到前端；
//          后台不能用默认错误返回，得设置专门返回对象！
//          得到id；在req.user对象；{id:解密出id值} 
app.use(expressJWT({
  secret: 'be139',
  algorithms: ['HS256']
}).unless({
  // 除了登录和注册的接口之外，其他接口都需要认证
  path: ['/api/login', '/api/reguser']
}));





// ************************************************************设计路由：
// 分类
let categoryRouter = require("./routers/category.js")
app.use("/my/article", categoryRouter);


// 登录
let loginRouter = require("./routers/login.js")
app.use("/api", loginRouter);


// 个人中心：
let userRouter = require("./routers/user.js")
app.use("/my", userRouter);


// 文章：名称都是自己设计的！
let articleRouter = require("./routers/article.js")
app.use("/my/article", articleRouter);












// ************************************************************处理错误中间件
// 
app.use(function(err, req, res, next) {
  if (err.name == "UnauthorizedError") {
    res.send({ status: 1, message: "身份认证失败！" });
  }
});